getObjectServiceTypeParameter{
  for (  Type flattenedType : flattenedTypes) {
    if (flattenedType instanceof ParameterizedType && ((ParameterizedType)flattenedType).getRawType().equals(OS.class)) {
}
getInterfaceClosure{
  Set<Type> types=new HashSet<Type>();
  for (  Type t : rawType.getGenericInterfaces()) {
    types.addAll(new HierarchyDiscovery(t).getTypeClosure());
}
getObjectServiceTypeParameter{
  Type typeParameter=getObjectServiceTypeParameter(getInterfaceClosure(at.getJavaClass()));
    return getObjectServiceTypeParameter(at.getTypeClosure());
}
createWildcards{
  Type[] ret=new Type[count];
    ret[i]=PureWildcardType.INSTANCE;
}
processAnnotatedType{
  if (OS.class.isAssignableFrom(at.getJavaClass())) {
    Type osTypeParameter=getObjectServiceTypeParameter(at);
    if (osTypeParameter instanceof TypeVariable) {
      String typeVariableName=((TypeVariable)osTypeParameter).getName();
      for (      TypeVariable<Class<X>> classTypeVariable : at.getJavaClass().getTypeParameters()) {
        if (classTypeVariable.getName().equals(typeVariableName)) {
          if (classTypeVariable.getBounds().length > 0) {
            osTypeParameter=classTypeVariable.getBounds()[0];
    if (osTypeParameter instanceof Class) {
      boolean osFound=false;
        if (serviceClassInterface.isAssignableFrom(OS.class)) {
      if (serviceClass.getTypeParameters().length > 0) {
      ObjectServiceSpecification osSpec=new ObjectServiceSpecification((Class<?>)osTypeParameter,serviceType,serviceClass);
      objectServicesSpecs.add(osSpec);
        objectServicesProviderSpecs.add(osSpec);
}
afterBeanDiscovery{
    abd.addBean(new ObjectServiceProviderBean(this,objectServicesSpec));
}
serviceSpecForObject{
    if (candidateSpec.getObjectClass().isAssignableFrom(objClass) && serviceClass.isAssignableFrom(candidateSpec.getServiceClass())) {
      if (bestSoFar == null || bestSoFar.getServiceClass().isAssignableFrom(candidateSpec.getServiceClass())) {
}
beanFromSpec{
  Set<Bean<?>> bestServiceBeans=beanManager.getBeans(spec.getServiceType());
  if (bestServiceBeans.size() == 0) {
  if (bestServiceBeans.size() > 1) {
  Bean<?> bestServiceBean=bestServiceBeans.iterator().next();
  return beanManager.getReference(bestServiceBean,spec.getServiceType(),beanManager.createCreationalContext(bestServiceBean));
}
serviceForObject{ }
